创建属性驱动的动画
如果希望使用属性类型而非时间来控制关键帧动画,请使用属性驱动的动画。例如,使用属性驱动的动画,您可以使用关键帧动画通过属性类型来控制仪表指针的位置。
要创建属性驱动的动画:
- 选择或创建一个关键帧动画。
例如,要创建一个可用于旋转仪表指针的关键帧动画:- 在素材库 (Library) 中,按下 Alt 并右键点击动画 (Animations) 并选择 动画 (Animation)。
- 在属性 (Properties) 中设置:
- 目标属性 (Target Property) 为Node3D.RenderTransformation
- 属性特性 (Property Attribute) 为旋转 Z (Rotation Z)
- 在素材库 (Library) 中,双击您在第一步中创建的动画以使其在动画剪辑编辑器 (Animation Clip Editor) 中打开,然后在动画剪辑编辑器 (Animation Clip Editor) 中使用移动工具 (Move tool) 选择画布区域中的动画。
- 选择关键帧工具 (Keyframe tool) 并点击两次动画,以创建两个关键帧。
- 选择移动工具 (Move tool) ,然后选择第一个关键帧并设置:
- 时间 (Time) 为 0
在属性驱动的动画中,您可以使用您在属性驱动的动画播放器 (Property Driven Animation Player) 中选择的 时间控制器属性类型 (Time Controller Property Type) 控制动画时间。您需要在这个过程中的最后一步执行操作。 - 值 (Value) 为 0
在属性驱动的动画中,您可以使用值 (Value) 属性控制在动画中设置的属性的值。在本例中,您将控制Node3D.RenderTransformation 属性的旋转 Z (Rotation Z) 属性字段的值。
- 在动画中选择第二个关键帧并设置:
- 时间 (Time) 为 270
- 值 (Value) 为 -270
将值设置为 -270 时,动画会沿逆时针方向将仪表指针旋转 270 度。
- 在工程 (Project) 中,创建要用于控制属性驱动的动画的节点。
例如,在资产 (Assets) 中,将源 (Source) 设置为出厂内容 (Factory Content) 并从资产 (Assets) 中将组合仪表仪表 (Cluster Gauges) 项拖到预览 (Preview) 中。
- 在工程 (Project) 中,选择要用于控制属性驱动的动画的节点。
例如,在工程 (Project) 中,选择组合仪表仪表 (Cluster Gauges) > Gauge Scene > RootNode > Model > Speed Gauge > Speed Needle 节点。
- 在属性 (Properties) 中,右键点击并选择添加属性 (Add Property) > 控制器属性 (Controller Properties) > Gauges.Speed。
您必须将要用于控制动画的属性添加到要在其中使用属性驱动的动画播放器 (Property Driven Animation Player) 的那个节点中。组合仪表仪表 (Cluster Gauges) 出厂内容项已经包含一个 Gauges.Speed 自定义属性类型。
- 在节点组件 (Node Components) > 动画 (Animation) 区域中点击+ 添加动画 (+ Add Animation) 并选择属性驱动的动画播放器 (Property Driven Animation Player)。
- 在节点组件 (Node Components) > 动画 (Animation) 区域的 属性驱动的动画播放器 (Property Driven Animation Player) 中设置:
- 目标动画时间线 (Target Animation Timeline) 为动画数据 (Animation Data)、动画剪辑 (Animation Clip) 或要用于属性驱动动画的时间线序列 (Timeline Sequence)。
例如,选择您在这个过程的第一步中创建的动画。 - 将时间控制器属性类型 (Time Controller Property Type) 设置为您希望动画使用的属性类型,而不是将其设置为时间。
例如,选择要用于控制指针位置的属性类型。
当更改您在时间控制器属性类型 (Time Controller Property Type) 中设置的属性的值时,属性驱动的动画播放器 (Property Driven Animation Player) 会更改在动画中设置的属性和属性特性的值。在本例中,属性驱动的动画播放器 (Property Driven Animation Player) 会更改渲染变换 (Render Transformation) 属性和旋转 Z (Rotation Z) 属性字段,以旋转 Speed Needle 节点。
在 API 中使用 属性驱动的动画播放器 (Property Driven Animation Player)
要创建属性驱动的动画播放器,并指定时间线和时间控制器属性,请执行以下代码:
//创建属性驱动的动画播放器。
PropertyDrivenAnimationPlayerSharedPtr player = PropertyDrivenAnimationPlayer::create(domain, "player");
//设置时间线。
player->setTimeline(timeline);
//设置时间控制器属性类型。
player->setTimeControllerPropertyType(timePropertyType.getName());
要将属性驱动的动画播放器附加到节点,请执行以下代码:
node->addNodeComponent(player);
有关详细信息,请参阅 API reference中的 PropertyDrivenAnimationPlayer
类。
另请参阅
插值属性值
动画
打开导航